OPCDA DCOM .NET开发常见问题一览 您所在的位置:网站首页 无法将类型为 com对象强制转换为接口类型 OPCDA DCOM .NET开发常见问题一览

OPCDA DCOM .NET开发常见问题一览

2024-07-05 11:47| 来源: 网络整理| 查看: 265

1."OpcNetApi.Com 无法将类型为“System.__ComObject”的 COM 对象转换为接口类型“OpcRcw.Comn.IOPCServerList2”。此操作失败,因为 IID 为“{9DD0B56C-AD9E-43EE-8305-487F3188BF7A}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:未注册类(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))。 "

2.未经处理的异常:  System.InvalidCastException: 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“OPCDA.Interface.IOPCServer”。此操作失败的原因是对 IID 为“{39C13A4D-011E-11D0-9675-0020AFD8ADB3}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

以上两个错误解决方法一致,有两个。

1.代码编译为x86(32位)后运行。另外,visual studio code不能直接编译为x86(官方确认不会实现),请在visual studio中编译。

2.使用OPC Core Component Redistributable 105.1(x64)及以上版本。这些版本可以跨x86和x64进行通讯。

还有一个不太常见的问题:

3.Unable to cast COM object of type 'System.__ComObject' to interface type 'OpcRcw.Comn.IOPCServerList2'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{9DD0B56C-AD9E-43EE-8305-487F3188BF7A}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

不要相信网上的一切言论,这个问题是服务端太过老旧,没有实现CLSID枚举,与客户端无关。

解决方法:如果您的连接地址类似为opcda://192.168.1.150/OPCServer.Sample.1,格式为opcda://HOST_ADDRESS/PROG_ID,请把OPC服务端的CLSID追加在这个地址的后面,就可以解决这个问题。 opcda://192.168.1.150/OPCServer.Sample.1/{ED7BA470-8E54-465E-825C-99712043E01C} opcda://HOST_ADDRESS/PROG_ID/{CLS_ID}

请在dcomcnfg里面查找CLS_ID,或者一切用其它语言实现的OPC测试客户端查询CLS_ID。网上类似教程很多,这里略过。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有